/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * FichaMortalidadPacientePresentacion.java
 *
 * Created on 31-ago-2010, 11:35:04
 */

package presentacion.evolucion;

import com.toedter.calendar.IDateEditor;
import hibernate.objeto.DiagnosticoYTriageInternacion;
import hibernate.objeto.EvolucionEnfermeriaDeInternacion;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JSpinner;
import javax.swing.JSpinner.DefaultEditor;
import javax.swing.SpinnerDateModel;
import logica.CapaLogica;
import logica.EvolucionEnfermeriaDeInternacionLogica;
import logica.validacion.CapaValidacion;
import presentacion.CapaPresentacion;
import presentacion.MenuPrincipal;
import presentacion.utilidad.maquetado.Fuente;
import presentacion.utilidad.maquetado.Icono;
import presentacion.utilidad.maquetado.InformeError;
import presentacion.utilidad.BarMenu;
import presentacion.utilidad.MensajePresentacion;

/**
 *
 * @author Administrador
 */
public class EvolucionEnfermeriaDeInternacionPresentacion extends javax.swing.JDialog {

    /** Creates new form EvolucionPresentacion */
    /**
     * Crea el form de EvolucionPresentacion.
     *
     * @param parent
     * @param modal
     * @param unDiagnosticoYTriageInternacion El objeto DiagnosticoYTriageInternacion
     * asociado a la Evolucion enfermeria de internacion, null si se trata de 
     * una práctica de ambulatorio.
     * @param unaEvolucionEnfermeriaDeInternacion Si es null se trata de una carga, de lo contrario
     * del objeto Evolucion a visualizar
     */
    public EvolucionEnfermeriaDeInternacionPresentacion(
            java.awt.Frame parent, boolean modal,
            DiagnosticoYTriageInternacion unDiagnosticoYTriageInternacion,
            EvolucionEnfermeriaDeInternacion unaEvolucionEnfermeriaDeInternacion) {
        super(parent, modal);

        diagnosticoYTriageInternacion = unDiagnosticoYTriageInternacion;
        evolucionEnfermeriaDeInternacion = unaEvolucionEnfermeriaDeInternacion;

        initComponents();
        personalizarGUI();
        setearEventosQueCapturanTeclaEnterYEscape();
        setSize(CapaPresentacion.getTamañoMaximoJDialog());
        setLocationRelativeTo(null);
    }

    /**
     * Setea datos de la ventana.
     *
     */
    private void personalizarGUI() {
        //Crea la barra de menu
        this.setJMenuBar(BarMenu.createMenuBarEvolucionEnfermeriaDeInternacionPresentacion(this));

        if (CapaPresentacion.modoCarga) {
            modoCarga();
        } else if (CapaPresentacion.modoModificacion) {
            modoModificacion();
        } else if (CapaPresentacion.modoVisualizacion) {
            modoVisualizacion();
        }
        
    }

    /**
     * Setea la ventana en modo visualización.
     */
    private void modoVisualizacion() {
        exhibirDatosEnPantalla();
        setearEstadoCampos(false);
        botonCancelar.requestFocus();
        CapaPresentacion.
                personalizarBotonesEnVisualizacion(botonAceptar, botonCancelar);
    }

    /**
     * Setea la ventana en modo visualización.
     */
    private void modoCarga() {
        evolucionEnfermeriaDeInternacion = new EvolucionEnfermeriaDeInternacion();
        horaEvolucionEnfermeriaDeInternacion.getModel().setValue(new Date());
        fechaEvolucionEnfermeriaDeInternacion.setDate(new Date());
        textoApellidoNombreProfesional.setText(
                "Evoluciona: "
                + MenuPrincipal.usuarioActivo.getPersona().getApellidoPersona() + ", "
                + MenuPrincipal.usuarioActivo.getPersona().getNombrePersona());
    }

    /**
     * Setea la ventana en modo modificación.
     *
     */
    private void modoModificacion() {
        exhibirDatosEnPantalla();
        setearEstadoCampos(true);

        horaEvolucionEnfermeriaDeInternacion.getModel().setValue(new Date());
        fechaEvolucionEnfermeriaDeInternacion.setDate(new Date());
    }

    /**
     * Permite visualizar los detalles de la enfermedad y su diagnóstico.
     *
     */
    private void exhibirDatosEnPantalla() {
        String horaEnString = evolucionEnfermeriaDeInternacion.
                getHoraEvolucionEnfermeriaDeInternacion();
        horaEvolucionEnfermeriaDeInternacion.getModel().setValue(new Date(0, 0, 0,
                CapaLogica.separarHoras(horaEnString),
                CapaLogica.separarMinutos(horaEnString),
                CapaLogica.separarSegundos(horaEnString)));
        fechaEvolucionEnfermeriaDeInternacion.setDate(evolucionEnfermeriaDeInternacion.
                getFechaEvolucionEnfermeriaDeInternacion());
        descripcionEvolucionEnfermeriaDeInternacion.setText(
                evolucionEnfermeriaDeInternacion.getDescripcionEvolucionEnfermeriaDeInternacion());
        descripcionEvolucionEnfermeriaDeInternacion.setCaretPosition(0);
        textoApellidoNombreProfesional.setText(
                "Evolucionó: "
                + evolucionEnfermeriaDeInternacion.getApellidoProfesionalEvolucionEnfermeriaDeInternacion() + ", "
                + evolucionEnfermeriaDeInternacion.getNombreProfesionalEvolucionEnfermeriaDeInternacion());
    }

    
    /**
     * Setea el estado de los campos.
     * 
     * @param estado El estado a setear
     */
    private void setearEstadoCampos(boolean estado) {
        horaEvolucionEnfermeriaDeInternacion.setEnabled(estado);
        fechaEvolucionEnfermeriaDeInternacion.setEnabled(estado);
        descripcionEvolucionEnfermeriaDeInternacion.setEnabled(estado);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        textoDescriptivoVentana = new javax.swing.JLabel();
        panelEvolucionEnfermeriaDeInternacionActual = new javax.swing.JPanel();
        textoHoraYFechaEvolucionEnfermeriaDeInternacion = new javax.swing.JLabel();
        SpinnerDateModel spinerModel = new SpinnerDateModel(new Date(0, 0, 0, Calendar.HOUR_OF_DAY, 0, 0), null, null, Calendar.HOUR_OF_DAY);
        horaEvolucionEnfermeriaDeInternacion = new javax.swing.JSpinner(spinerModel);
        fechaEvolucionEnfermeriaDeInternacion = new com.toedter.calendar.JDateChooser();
        textoDescripcionEvolucion = new javax.swing.JLabel();
        descripcionEvolucionEnfermeriaDeInternacionScrollPanel = new javax.swing.JScrollPane();
        descripcionEvolucionEnfermeriaDeInternacion = new javax.swing.JTextArea();
        textoApellidoNombreProfesional = new javax.swing.JLabel();
        botonAceptar = new javax.swing.JButton();
        botonCancelar = new javax.swing.JButton();
        textoEstadoEntidad = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Evolución Enfermería de la Internación");
        setMinimumSize(new java.awt.Dimension(816, 728));
        setResizable(false);

        textoDescriptivoVentana.setFont(Fuente.FUENTE_TITULO_2);
        textoDescriptivoVentana.setForeground(Fuente.COLOR_NORMAL);
        textoDescriptivoVentana.setText("Ingrese la información de la evolución enfermería de internación");
        textoDescriptivoVentana.setPreferredSize(new java.awt.Dimension(762, 20));

        panelEvolucionEnfermeriaDeInternacionActual.setMinimumSize(new java.awt.Dimension(473, 563));

        textoHoraYFechaEvolucionEnfermeriaDeInternacion.setFont(Fuente.FUENTE_LABEL);
        textoHoraYFechaEvolucionEnfermeriaDeInternacion.setForeground(Fuente.COLOR_NORMAL);
        textoHoraYFechaEvolucionEnfermeriaDeInternacion.setText("Hora y fecha");
        textoHoraYFechaEvolucionEnfermeriaDeInternacion.setPreferredSize(new java.awt.Dimension(135, 20));

        JSpinner.DateEditor horaDeMuerte = new JSpinner.DateEditor(horaEvolucionEnfermeriaDeInternacion, "HH:mm:ss");
        horaEvolucionEnfermeriaDeInternacion.setEditor(horaDeMuerte);
        horaEvolucionEnfermeriaDeInternacion.setFont(Fuente.FUENTE_TEXTFIELD);
        horaEvolucionEnfermeriaDeInternacion.setPreferredSize(new java.awt.Dimension(128, 20));

        fechaEvolucionEnfermeriaDeInternacion.setToolTipText("");
        fechaEvolucionEnfermeriaDeInternacion.setDate(new Date());
        fechaEvolucionEnfermeriaDeInternacion.setMaxSelectableDate(new Date());
        fechaEvolucionEnfermeriaDeInternacion.setMinSelectableDate(new java.util.Date(-2208985673000L));
        fechaEvolucionEnfermeriaDeInternacion.setPreferredSize(new java.awt.Dimension(144, 20));

        textoDescripcionEvolucion.setFont(Fuente.FUENTE_LABEL);
        textoDescripcionEvolucion.setForeground(Fuente.COLOR_NORMAL);
        textoDescripcionEvolucion.setText("Descripción");
        textoDescripcionEvolucion.setPreferredSize(new java.awt.Dimension(135, 20));

        descripcionEvolucionEnfermeriaDeInternacionScrollPanel.setPreferredSize(new java.awt.Dimension(760, 236));

        descripcionEvolucionEnfermeriaDeInternacion.setColumns(2);
        descripcionEvolucionEnfermeriaDeInternacion.setFont(Fuente.FUENTE_TEXTFIELD);
        descripcionEvolucionEnfermeriaDeInternacion.setForeground(Fuente.COLOR_NORMAL);
        descripcionEvolucionEnfermeriaDeInternacion.setLineWrap(true);
        descripcionEvolucionEnfermeriaDeInternacion.setRows(2);
        descripcionEvolucionEnfermeriaDeInternacion.setWrapStyleWord(true);
        descripcionEvolucionEnfermeriaDeInternacionScrollPanel.setViewportView(descripcionEvolucionEnfermeriaDeInternacion);

        textoApellidoNombreProfesional.setFont(Fuente.FUENTE_LABEL);
        textoApellidoNombreProfesional.setForeground(Fuente.COLOR_NORMAL);
        textoApellidoNombreProfesional.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        textoApellidoNombreProfesional.setText("<Profesional que evoluciona>");
        textoApellidoNombreProfesional.setPreferredSize(new java.awt.Dimension(135, 20));

        javax.swing.GroupLayout panelEvolucionEnfermeriaDeInternacionActualLayout = new javax.swing.GroupLayout(panelEvolucionEnfermeriaDeInternacionActual);
        panelEvolucionEnfermeriaDeInternacionActual.setLayout(panelEvolucionEnfermeriaDeInternacionActualLayout);
        panelEvolucionEnfermeriaDeInternacionActualLayout.setHorizontalGroup(
            panelEvolucionEnfermeriaDeInternacionActualLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelEvolucionEnfermeriaDeInternacionActualLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelEvolucionEnfermeriaDeInternacionActualLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(descripcionEvolucionEnfermeriaDeInternacionScrollPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 984, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelEvolucionEnfermeriaDeInternacionActualLayout.createSequentialGroup()
                        .addComponent(textoHoraYFechaEvolucionEnfermeriaDeInternacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(horaEvolucionEnfermeriaDeInternacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(fechaEvolucionEnfermeriaDeInternacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(textoApellidoNombreProfesional, javax.swing.GroupLayout.DEFAULT_SIZE, 557, Short.MAX_VALUE))
                    .addComponent(textoDescripcionEvolucion, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        panelEvolucionEnfermeriaDeInternacionActualLayout.setVerticalGroup(
            panelEvolucionEnfermeriaDeInternacionActualLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEvolucionEnfermeriaDeInternacionActualLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelEvolucionEnfermeriaDeInternacionActualLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(textoApellidoNombreProfesional, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(panelEvolucionEnfermeriaDeInternacionActualLayout.createSequentialGroup()
                        .addGroup(panelEvolucionEnfermeriaDeInternacionActualLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(fechaEvolucionEnfermeriaDeInternacion, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(textoHoraYFechaEvolucionEnfermeriaDeInternacion, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(horaEvolucionEnfermeriaDeInternacion, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGap(18, 18, 18)
                        .addComponent(textoDescripcionEvolucion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(descripcionEvolucionEnfermeriaDeInternacionScrollPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 552, Short.MAX_VALUE)
                .addContainerGap())
        );

        botonAceptar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonAceptar.setForeground(Fuente.COLOR_NORMAL);
        botonAceptar.setIcon(Icono.ICONO_16_ACEPTAR);
        botonAceptar.setText("Aceptar");
        botonAceptar.setToolTipText("Agrega la  información de la evolución de enfermería de internación");
        botonAceptar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAceptarActionPerformed(evt);
            }
        });

        botonCancelar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonCancelar.setForeground(Fuente.COLOR_NORMAL);
        botonCancelar.setIcon(Icono.ICONO_16_CANCELAR);
        botonCancelar.setText("Cancelar");
        botonCancelar.setToolTipText("Cancela la operación");
        botonCancelar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonCancelarActionPerformed(evt);
            }
        });

        textoEstadoEntidad.setFont(Fuente.FUENTE_TEXTFIELD);
        textoEstadoEntidad.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        textoEstadoEntidad.setPreferredSize(new java.awt.Dimension(150, 20));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(panelEvolucionEnfermeriaDeInternacionActual, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(textoDescriptivoVentana, javax.swing.GroupLayout.DEFAULT_SIZE, 836, Short.MAX_VALUE)
                        .addGap(18, 18, 18)
                        .addComponent(textoEstadoEntidad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(textoEstadoEntidad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(textoDescriptivoVentana, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelEvolucionEnfermeriaDeInternacionActual, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void botonAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAceptarActionPerformed
        agregarEvolucion();
}//GEN-LAST:event_botonAceptarActionPerformed
    private void botonCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonCancelarActionPerformed
        this.dispose();
}//GEN-LAST:event_botonCancelarActionPerformed

    /**
     * Agrega la evolución para la enfermedad/internación del paciente.
     *
     */
    private void agregarEvolucion() {
        //Valida todos los datos ingresados
        if (validarCampos()) {
            if (CapaPresentacion.confirmarModificacion(
                    "evolución de enfermería de internación", "la")) {
                //Carga toda la información de la pantalla
                recopilarInformacion();

                int[] idEvolucion = new int[1];
                if (CapaPresentacion.modoModificacion) {
                    //Modificación de enfermedadYDiagnosticoAmbulatorio
                    idEvolucion[0] =
                            evolucionEnfermeriaDeInternacion.getIdEvolucionEnfermeriaDeInternacion();
                } else {
                    //Alta de enfermedadYDiagnosticoAmbulatorio
                    idEvolucion[0] = -1;
                }
                if (EvolucionEnfermeriaDeInternacionLogica.agregarEvolucionEnfermeriaDeInternacion(
                        datosEvolucionEnfermeriaDeInternacion, diagnosticoYTriageInternacion,
                        evolucionEnfermeriaDeInternacion, idEvolucion)) {
                    evolucionEnfermeriaDeInternacion =
                            EvolucionEnfermeriaDeInternacionLogica.getEvolucionEnfermeriaDeInternacionPorId(idEvolucion[0]);
                    dispose();
                }
            }
        } else {
            MensajePresentacion.errorDatosInvalidos();
        }
    }

    /**
     * Valida en conjunto todos los campos. Aquellos que son obligatorios y los
     * que no.
     *
     * @return true si el objeto está listo para cargarse, false en caso
     * contrario
     */
    private boolean validarCampos() {
        boolean esFechaValida = false;
        boolean esDescripcionValida = false;

        //Manejo de la validación de fecha
        if (!CapaValidacion.validarFecha(
                fechaEvolucionEnfermeriaDeInternacion.getDate(), null, true)) {
            textoHoraYFechaEvolucionEnfermeriaDeInternacion.setForeground(
                    Fuente.COLOR_ERROR);
            textoHoraYFechaEvolucionEnfermeriaDeInternacion.setToolTipText(InformeError.
                    INFORME_ERROR_USO_COMUN_HORA_Y_FECHA);
            esFechaValida = false;
        } else {
            textoHoraYFechaEvolucionEnfermeriaDeInternacion.setForeground(
                    Fuente.COLOR_NORMAL);
            textoHoraYFechaEvolucionEnfermeriaDeInternacion.setToolTipText(null);
            esFechaValida = true;
        }

        //Manejo de la descripción de la evolución
        if (!CapaValidacion.validarCampoObligatorio(
                descripcionEvolucionEnfermeriaDeInternacion.getText())) {
            textoDescripcionEvolucion.setForeground(
                    Fuente.COLOR_ERROR);
            textoDescripcionEvolucion.setToolTipText(InformeError.
                    INFORME_ERROR_USO_COMUN_EVOLUCION_DESCRIPCION);
            esDescripcionValida = false;
        } else {
            textoDescripcionEvolucion.setForeground(
                    Fuente.COLOR_NORMAL);
            textoDescripcionEvolucion.setToolTipText(null);
            esDescripcionValida = true;
        }

        return esFechaValida && esDescripcionValida;
    }

    /**
     * Carga todos los datos ingresados en pantalla.
     *
     */
    private void recopilarInformacion() {
        datosEvolucionEnfermeriaDeInternacion = new Object[5];

        datosEvolucionEnfermeriaDeInternacion[CapaLogica.EVOLUCION_ENFERMERIA_DE_INTERNACION_HORA] =
                CapaLogica.separarTiempo(horaEvolucionEnfermeriaDeInternacion.getValue().toString());

        datosEvolucionEnfermeriaDeInternacion[CapaLogica.EVOLUCION_ENFERMERIA_DE_INTERNACION_FECHA] =
                fechaEvolucionEnfermeriaDeInternacion.getDate();

        datosEvolucionEnfermeriaDeInternacion[CapaLogica.EVOLUCION_ENFERMERIA_DE_INTERNACION_DESCRIPCION] =
                descripcionEvolucionEnfermeriaDeInternacion.getText();

        datosEvolucionEnfermeriaDeInternacion[CapaLogica.EVOLUCION_ENFERMERIA_DE_INTERNACION_APELLIDO_PROFESIONAL] =
                MenuPrincipal.usuarioActivo.getPersona().getApellidoPersona();

        datosEvolucionEnfermeriaDeInternacion[CapaLogica.EVOLUCION_ENFERMERIA_DE_INTERNACION_NOMBRE_PROFESIONAL] =
                MenuPrincipal.usuarioActivo.getPersona().getNombrePersona();
    }

    /**
     * Setea en cada componente del JDialog los eventos que capturarán la tecla
     * enter y escape.
     */
    private void setearEventosQueCapturanTeclaEnterYEscape() {
        //Declaración del evento a capturar
        KeyListener keyListenerEnter = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    agregarEvolucion();
                }
            }
        };
        //Declaración del evento a capturar
        KeyListener keyListenerEscape = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    dispose();
                }
            }
        };
        //Setear eventos
        ((DefaultEditor) horaEvolucionEnfermeriaDeInternacion.getEditor()).
                getTextField().addKeyListener(keyListenerEnter);
        ((DefaultEditor) horaEvolucionEnfermeriaDeInternacion.getEditor()).
                getTextField().addKeyListener(keyListenerEscape);

        ((IDateEditor) fechaEvolucionEnfermeriaDeInternacion.getDateEditor()).
                getUiComponent().addKeyListener(keyListenerEnter);
        ((IDateEditor) fechaEvolucionEnfermeriaDeInternacion.getDateEditor()).
                getUiComponent().addKeyListener(keyListenerEscape);

        descripcionEvolucionEnfermeriaDeInternacion.addKeyListener(keyListenerEscape);

        botonAceptar.addKeyListener(keyListenerEscape);
        botonCancelar.addKeyListener(keyListenerEscape);
    }

    /**
     * Retorna la evolución enfermeria de internacion agregada.
     *
     * @return El objeto EvolucionEnfermeriaDeInternacion
     */
    public static EvolucionEnfermeriaDeInternacion getEvolucionEnfermeriaDeInternacion() {
        return evolucionEnfermeriaDeInternacion;
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botonAceptar;
    private javax.swing.JButton botonCancelar;
    private javax.swing.JTextArea descripcionEvolucionEnfermeriaDeInternacion;
    private javax.swing.JScrollPane descripcionEvolucionEnfermeriaDeInternacionScrollPanel;
    private com.toedter.calendar.JDateChooser fechaEvolucionEnfermeriaDeInternacion;
    private javax.swing.JSpinner horaEvolucionEnfermeriaDeInternacion;
    private javax.swing.JPanel panelEvolucionEnfermeriaDeInternacionActual;
    private javax.swing.JLabel textoApellidoNombreProfesional;
    private javax.swing.JLabel textoDescripcionEvolucion;
    private javax.swing.JLabel textoDescriptivoVentana;
    private javax.swing.JLabel textoEstadoEntidad;
    private javax.swing.JLabel textoHoraYFechaEvolucionEnfermeriaDeInternacion;
    // End of variables declaration//GEN-END:variables
    private DiagnosticoYTriageInternacion diagnosticoYTriageInternacion;
    private static EvolucionEnfermeriaDeInternacion evolucionEnfermeriaDeInternacion;
    private Object[] datosEvolucionEnfermeriaDeInternacion;    
}
